package com.gph.saviorframework.dao.security;

import com.gph.saviorframework.base.dao.BaseDao;
import com.gph.saviorframework.common.model.Role;
import org.apache.ibatis.annotations.Param;
import org.aspectj.lang.annotation.Aspect;

import java.util.List;
import java.util.Map;

@Aspect
public interface RoleDao extends BaseDao<Role,String> {

    List<Map<String,Object>> find(@Param(value = "sort") String sort, @Param(value = "dir") String dir,
                                  @Param(value = "where_clause") String whereClause);

    long count(@Param(value = "where_clause") String whereClause);

    /**
     * 根据用户信息查询角色,如果用户有某个角色，此角色的处于选中状态
     * @param username
     * @return
     */
    List<Map<String, Object>> findByUser(@Param(value = "username") String username);

    /**
     * 根据岗位查询角色
     * @param position
     * @return
     */
    List<Map<String, Object>> findByPosition(@Param(value = "positionId") String position);

    /**
     * 添加角色和function之间的关系
     * @param roleId
     * @param funId
     */
    void addRoleRelFunction(@Param(value = "roleId") String roleId, @Param(value = "funId") String funId);

    /**
     * 全部解除角色和功能之间的关系
     * @param roleId
     */
    void deleteRoleRelFunction(@Param(value = "roleId") String roleId);

    /**
     * 添加角色和menu之间的关系
     * @param roleId
     * @param menuId
     */
    void addRoleRelMenu(@Param(value = "roleId") String roleId, @Param(value = "menuId") String menuId);

    /**
     * 全部解除角色和menu之间的关系
     * @param roleId
     */
    void deleteRoleRelMenu(@Param(value = "roleId") String roleId);

    /**
     * 添加角色和用户之间的关系
     * @param roleId
     * @param userId
     */
    void addRoleRelUser(@Param(value = "roleId") String roleId, @Param(value = "userId") String userId);

    /**
     * 删除角色和用户之间的关系
     * @param roleId
     * @param userId
     */
    void deleteRoleRelUser(@Param(value = "roleId") String roleId, @Param(value = "userId") String userId);
}
